package com.hua.comm.base;

import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;

import androidx.appcompat.app.AppCompatActivity;

import com.hua.comm.base.baseModel.IBaseModel;
import com.hua.comm.base.basePresenter.IBasePresenter;
import com.hua.comm.base.baseView.IBaseView;


public abstract class BaseActivity<V extends IBaseView, P extends IBasePresenter<V, ? extends IBaseModel>> extends AppCompatActivity
        implements IBaseView {

    protected P mPresenter; // Presenter实例（由子类实现创建）

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        LayoutInflater inflater = LayoutInflater.from(this);
        View view = inflater.inflate(getLayoutId(), null, false);
        setContentView(view);

        // 初始化Presenter（由子类实现具体类型）
        mPresenter = createPresenter();
        // 绑定View到Presenter
        if (mPresenter != null) {
            mPresenter.attachView((V) this); // 强转当前Activity为View接口实例
        }
        // 初始化视图
        initView(view);
        // 初始化数据
        initData();
        // 事件处理
        setOnClickListeners();
    }


    protected abstract void setOnClickListeners();
    // 由子类提供布局ID
    protected abstract int getLayoutId();

    // 由子类创建具体Presenter实例
    protected abstract P createPresenter();

    // 初始化视图（ findViewById等操作）
    protected abstract void initView(View view);

    // 初始化数据（网络请求、数据加载等）
    protected abstract void initData();


    @Override
    protected void onDestroy() {
        super.onDestroy();
        // 解绑View，释放Model资源，防止内存泄漏
        if (mPresenter != null) {
            mPresenter.detachView();
            mPresenter.getModel().onDestroy();
        }
    }



    @Override
    public void showLoading() {

    }

    @Override
    public void hideLoading() {

    }

    @Override
    public void showError(String errorMsg) {

    }

}